package com.fdb.efp.nls.service.dao;

import com.fdb.efp.nls.service.domain.YedUploadRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * YedUploadRecord的Dao接口
 * 
 * @author 
 *
 */
public interface YedUploadRecordDao {


	/**
	 * 通过YedUploadRecord的id获得YedUploadRecord对象
	 * 
	 * @param id
	 * @return
	 */
	YedUploadRecord selectYedUploadRecordById(String id);
	
	/**
	 * 获得一个YedUploadRecord对象,以参数YedUploadRecord对象中不为空的属性作为条件进行查询,返回符合条件的第一条
	 * 
	 * @param obj
	 * @return
	 */
	YedUploadRecord selectYedUploadRecordObjSingle(YedUploadRecord obj);
	
	/**
	 * 获得一个YedUploadRecord对象,以参数YedUploadRecord对象中不为空的属性作为条件进行查询
	 * 
	 * @param obj
	 * @return
	 */
	List<YedUploadRecord> selectYedUploadRecordByObj(YedUploadRecord obj);

	/**
	 * 插入YedUploadRecord到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertYedUploadRecord(YedUploadRecord value);
	
	/**
	 * 插入YedUploadRecord中属性值不为null的数据到数据库
	 * 
	 * @param value
	 * @return
	 */
	int insertNotNullYedUploadRecord(YedUploadRecord value);
	
	/**
	 * 批量插入YedUploadRecord到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertYedUploadRecordByBatch(List<YedUploadRecord> value);
	/**
	 * 通过YedUploadRecord的id删除YedUploadRecord
	 * 
	 * @param id
	 * @return
	 */
	int deleteYedUploadRecordById(String id);

	/**
	 * 通过YedUploadRecord的id更新YedUploadRecord中的数据,包括null值
	 * 
	 * @param enti
	 * @return
	 */
	int updateYedUploadRecordById(YedUploadRecord enti);
	
	/**
	 * 通过YedUploadRecord的id更新YedUploadRecord中属性不为null的数据
	 * 
	 * @param enti
	 * @return
	 */
	int updateNotNullYedUploadRecordById(YedUploadRecord enti);

	/**
	 * 获取需要上传的记录
	 * @param maxNum 处理记录数
	 * @param retryNum 重试次数
	 * @param prdId 产品id
	 * @return
	 */
	List<YedUploadRecord> selectYedNeedUploadList(@Param("maxNum") int maxNum, @Param("retryNum") int retryNum, @Param("prdId") String prdId);


	int countByFileUrl(@Param("fileUrl") String fileUrl);

}